/*
 * Tactica.java
 *
 * 
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package futbol.tacticas.concursantes.TacticaCaccy;

import futbol.tacticas.Comando;
import futbol.tacticas.SituacionJugadores;
import futbol.tacticas.concursantes.Tactica;

import java.awt.Color;
import java.awt.geom.Point2D;
import java.util.Vector;



/**
 *
 * @author Administrador
 */
public abstract class Skills extends Point2D.Double
{

	private static Logger log = Logger.getLogger(Skills.class);
	
	public double	xInicial,
				    		yInicial;
	public int	    	ronda,
				    		golesHechos,
				    		golesRecibidos,
				    		numero,
				    		fuerza,
				    		velocidad;
	Tactica		   	tactica;

	public SituacionJugadores	sj			= null;
	public Defense				escuadra 	= null;
	public Manager 				tecnico		= null;
	public Ball		pelotaAInterceptar = null;
    
	public Skills(int numJugador, int xInicial, int yInicial, int fuerza, Manager tec, Defense escuadra)
	{
		this.numero 		= numJugador;
		
		this.ronda			= 0;
		
		this.golesHechos    = 0;
		this.golesRecibidos = 0;
	
		this.xInicial 		= xInicial;
		this.yInicial 		= yInicial;
		x					= this.xInicial;
		y					= this.yInicial;
		this.tecnico 		= tec;
		this.fuerza 		= fuerza;
		this.velocidad 		= 10 - fuerza;
		
		if(tecnico!=null)
			this.tactica		= tecnico.getTactica();
		
		this.escuadra		= escuadra;
		
	}
	
	public void actualitzarDades()
	{
		int[] tmp;
		
		this.sj				= tecnico.getUltimaSJ();
		
		this.x  		= sj.getMisJugadores()[numero].x;
		this.y		= sj.getMisJugadores()[numero].y;
		

		this.golesHechos   		= tecnico.getGolesHechos();
		this.golesRecibidos	= tecnico.getGolesRecibidos();
		
		this.ronda 			= tecnico.getRonda();
	}

	
	public final Vector<Comando> getComandosCompleto()
	{
		if(escuadra!=null)
			if(escuadra.soyLider(numero))
				return escuadra.getMejorJugada();
		
		return getComandos();
	}

	abstract public Vector<Comando> getComandos();
	
	public Skills getProximaPersonalitat()
	{
		return this;
	}	

	public void setTime(int time)
	{
		this.ronda = time;
	}
	public void setGolesHechos(int golesHechos)
	{
		this.golesHechos = golesHechos;
	}
	public void setGolesRecibidos(int golesRecibidos)
	{
		this.golesRecibidos = golesRecibidos;
	}
	public void setSituacionJugadores(SituacionJugadores sj)
	{
		this.sj = sj;
	}
	public String getNombre()
	{
		return new String("desconocido");
	}
	
	public int getNumero()
	{
		return numero;
	}
	public int getFuerza()
	{
		return fuerza;
	}
	public int getVelocidad()
	{
		return velocidad;
	}
	public double getXInicial()
	{
		return xInicial;
	}
	public double getYInicial()
	{
		return yInicial;
	}
	
	public Point2D getPointAcutal(){
		return new Point2D.Double(this.x,this.y);
	}

	
	public Ball getPelotaAInterceptar() {
		return pelotaAInterceptar;
	}

	
	
	public void setPelotaAInterceptar(Ball pelotaAInterceptar) {
		this.pelotaAInterceptar = pelotaAInterceptar;
	}
	
}
